home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / docs / ippon / data / expl / expl.lzh / fxsp2lib.c < prev    next >
C/C++ Source or Header  |  2000-05-12  |  2KB  |  114 lines

  1. /* fxsp2lib.c */
  2.  
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5.  
  6.  
  7. typedef struct {
  8.     signed short vx;    /* 相対座標データ */
  9.     signed short vy;    /* 相対座標データ */
  10.     unsigned short pt;    /* スプライトパターンNo. */
  11.     unsigned short rv;    /* 反転コード */
  12. } SP_WORK;
  13.  
  14. static FILE *fp;
  15. static int pattern_no;
  16. static int sprite_no;
  17. extern char n_option;
  18.  
  19.  
  20. short fxsp_on (void)
  21. {
  22.     if (n_option)
  23.         return (0);
  24.  
  25.     if ((fp = fopen ("temp001.obj", "wb")) == NULL) {
  26.         printf ("ファイルを書き込めません\n");
  27.         return (-1);
  28.     }
  29.     fprintf (fp, "\nPCG_FILE    =    ***.sp    256    * 使用する PCG データ\n"
  30.          "\n"
  31.          "XY_OFFSET    =    $0000    $0000    * 座標のオフセット\n"
  32.          "PT_OFFSET    =    $0000        * PCGパターンナンバーのオフセット\n"
  33.          "OBJ_RV        =    $0000        * 全体の反転コード\n"
  34.          "\n");
  35.     pattern_no = 0;
  36.     sprite_no = 0;
  37.     return (0);
  38. }
  39.  
  40.  
  41.  
  42. static void write_pos (signed short pos)
  43. {
  44.     signed short p = pos;
  45.  
  46.     if (n_option)
  47.         return;
  48.  
  49.     if (p < 0)
  50.         fprintf (fp, "-$%04hx    ", -p);
  51.     else
  52.         fprintf (fp, " $%04hx    ", p);
  53.  
  54.     return;
  55. }
  56.  
  57.  
  58.  
  59. /* xsp_set_st と置き換えて使うと引き数の構造体を .obj ファイルに書き出す */
  60. short fxsp_set_st (void *sp_work0)
  61. {
  62.     SP_WORK *sp_work = (SP_WORK *) sp_work0;
  63.  
  64.     if (n_option)
  65.         return (0);
  66.  
  67.     if (!sprite_no) {
  68.         fprintf (fp,
  69.              "******************************** 複合スプライトパターン %3d ****\n\n"
  70.              "No.    =    NEXT    * 複合スプライトのパターンナンバー\n"
  71.              "            * 左から順に、X Y PT RV (以下同様)\n"
  72.              ,pattern_no);
  73.     }
  74.     fprintf (fp, "    ");
  75.     write_pos (sp_work->vx);
  76.     write_pos (sp_work->vy);
  77.  
  78.     fprintf (fp, "$%04x    ", sp_work->pt);
  79.     fprintf (fp, "$%04x\n", sp_work->rv);
  80.     sprite_no++;
  81.  
  82.     return (0);
  83. }
  84.  
  85.  
  86.  
  87. short fxsp_out (void)
  88. {
  89.     short s = sprite_no;
  90.  
  91.     if (n_option)
  92.         return (0);
  93.  
  94.     fprintf (fp, "\n\n");
  95.     pattern_no++;
  96.     sprite_no = 0;
  97.  
  98.     return (s);
  99. }
  100.  
  101.  
  102.  
  103. short fxsp_off (void)
  104. {
  105.     if (n_option)
  106.         return (0);
  107.  
  108.     if (fp != NULL)
  109.         fclose (fp);
  110.     fp = NULL;
  111.  
  112.     return (0);
  113. }
  114.